Telegram Group & Telegram Channel
Сегодня я хочу поговорить о том, как избавиться от дублирования кода в Laravel, особенно в тех местах, где это совсем не бросается в глаза — в валидации запросов.

Проблема

У тебя есть формы на создание и обновление сущности. И в обоих случаях в контроллере или Form Request’ах ты пишешь одинаковые правила валидации, только с небольшими отличиями.

Пример:


// StorePostRequest.php
return [
'title' => 'required|string|max:255',
'content' => 'required',
];



// UpdatePostRequest.php
return [
'title' => 'sometimes|required|string|max:255',
'content' => 'sometimes|required',
];


Решение — базовый класс с общими правилами

Создай абстрактный класс с общими правилами:


abstract class BasePostRequest extends FormRequest
{
protected function commonRules(): array
{
return [
'title' => 'string|max:255',
'content' => 'string',
];
}
}


А потом в наследниках добавляй нужные модификаторы:


// StorePostRequest.php
class StorePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'required',
'content' => 'required',
], $this->commonRules());
}
}



// UpdatePostRequest.php
class UpdatePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'sometimes|required',
'content' => 'sometimes|required',
], $this->commonRules());
}
}


🤔 Альтернатива — кастомная Rule-комбинация

Можно пойти дальше и использовать кастомные Rule-классы, если валидация становится сложной и завязанной на бизнес-логику.


Я часто вижу дублирование в валидации, особенно в старых проектах. Убрав это, код становится чище, а изменения в правилах — в разы проще.

А ты как организуешь валидацию? Используешь Form Request или валидируешь прямо в контроллере?

👉 @php_lib
👍4👎4🔥2



tg-me.com/php_lib/735
Create:
Last Update:

Сегодня я хочу поговорить о том, как избавиться от дублирования кода в Laravel, особенно в тех местах, где это совсем не бросается в глаза — в валидации запросов.

Проблема

У тебя есть формы на создание и обновление сущности. И в обоих случаях в контроллере или Form Request’ах ты пишешь одинаковые правила валидации, только с небольшими отличиями.

Пример:


// StorePostRequest.php
return [
'title' => 'required|string|max:255',
'content' => 'required',
];



// UpdatePostRequest.php
return [
'title' => 'sometimes|required|string|max:255',
'content' => 'sometimes|required',
];


Решение — базовый класс с общими правилами

Создай абстрактный класс с общими правилами:


abstract class BasePostRequest extends FormRequest
{
protected function commonRules(): array
{
return [
'title' => 'string|max:255',
'content' => 'string',
];
}
}


А потом в наследниках добавляй нужные модификаторы:


// StorePostRequest.php
class StorePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'required',
'content' => 'required',
], $this->commonRules());
}
}



// UpdatePostRequest.php
class UpdatePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'sometimes|required',
'content' => 'sometimes|required',
], $this->commonRules());
}
}


🤔 Альтернатива — кастомная Rule-комбинация

Можно пойти дальше и использовать кастомные Rule-классы, если валидация становится сложной и завязанной на бизнес-логику.


Я часто вижу дублирование в валидации, особенно в старых проектах. Убрав это, код становится чище, а изменения в правилах — в разы проще.

А ты как организуешь валидацию? Используешь Form Request или валидируешь прямо в контроллере?

👉 @php_lib

BY Библиотека PHP программиста 👨🏼‍💻👩‍💻


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/php_lib/735

View MORE
Open in Telegram


Библиотека PHP программиста ‍‍ Telegram | DID YOU KNOW?

Date: |

Start with a fresh view of investing strategy. The combination of risks and fads this quarter looks to be topping. That means the future is ready to move in.Likely, there will not be a wholesale shift. Company actions will aim to benefit from economic growth, inflationary pressures and a return of market-determined interest rates. In turn, all of that should drive the stock market and investment returns higher.

How to Use Bitcoin?

n the U.S. people generally use Bitcoin as an alternative investment, helping diversify a portfolio apart from stocks and bonds. You can also use Bitcoin to make purchases, but the number of vendors that accept the cryptocurrency is still limited. Big companies that accept Bitcoin include Overstock, AT&T and Twitch. You may also find that some small local retailers or certain websites take Bitcoin, but you’ll have to do some digging. That said, PayPal has announced that it will enable cryptocurrency as a funding source for purchases this year, financing purchases by automatically converting crypto holdings to fiat currency for users. “They have 346 million users and they’re connected to 26 million merchants,” says Spencer Montgomery, founder of Uinta Crypto Consulting. “It’s huge.”

Библиотека PHP программиста ‍‍ from us


Telegram Библиотека PHP программиста 👨🏼‍💻👩‍💻
FROM USA